# TODO *args 位置不定长参数
# 定义
def fn1(*args):
    print(type(args), args)


# 调用
# 以位置传参方式,传入任意多个实参
fn1(1, 2, 2,'abcd', True)      #<class 'tuple'> (1, 2, 2, 'abcd', True)

# TODO **kwargs 关键字不定长参数
def fn2(**kwargs):
    print(type(kwargs), kwargs)

# 调用
# 可以传入任意多个关键字方式的实参
fn2(a=1, b=3, c=30, d='hello', age=18)  #<class 'dict'> {'a': 1, 'b': 3, 'c': 30, 'd': 'hello', 'age': 18}

# TODO 万能参数
def fn3(*args, **kwargs):
    print(args)
    print(kwargs)

fn3(1, 2, a=1, b=2, c=3)     #{'a': 1, 'b': 2, 'c': 3}








